package thefirst.controller;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import thefirst.support.model.HelpService;
import thefirst.support.model.HelpVO;
import thefirst.support.model.NoticeService;
import thefirst.support.model.NoticeVO;
@Controller
public class SupportController {
	
	@Resource(name="noticeServiceImpl")
	private NoticeService noticeService;
	@Resource(name="helpServiceImpl")
	private HelpService helpService;
	
	/**
	 * 조회수가 올라가지 않고 공지사항 정보 가져오는 메서드
	 * @param no
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/showNoticeInfoNoHits.do")
	public ModelAndView showNoticeInfoNoHits(int no) throws SQLException{
		return new ModelAndView("support/notice/showNoticeInfo.notice","nvo",noticeService.showNoticeInfoNoHits(no));
	}
	
	/**
	 * 공지사항 목록에서 글보기 페이지로 이동
	 * 조회수 증가 - 서비스에서 처리
	 * @param no
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/showNoticeInfo.do")
	public ModelAndView showNoticeInfo(int no) throws SQLException{
		System.out.println("showNoticeInfo:"+no);
		NoticeVO nvo=noticeService.showNoticeInfo(no);
		System.out.println("showNoticeInfo:"+nvo);
		return new ModelAndView("support/notice/showNoticeInfo.notice","nvo",nvo);
	}
	
	/**
	 * 공지사항 목록 가져오는 메서드
	 * 페이지 당 10개(rownum/10)
	 * @param pageNo
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/noticeList.do")
	public ModelAndView getNoticeList(String pageNo) throws SQLException{
		return new ModelAndView("support/notice/noticeList.notice","list",noticeService.getNoticeList(pageNo));
	}
	
	
	
/////////////////////////////문의하기//////////////////////////////
	/**
	 * 문의하기 글쓰기 페이지로 이동
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/writeHelpPage.do")
	public String writeHelpPage() throws Exception{
		return "support/help/writeHelpPage.help";
	}
	/**
	 * 문의하기 글쓰기 DB에 저장
	 * 새로고침을 막기 위해서 redirect
	 * @param request
	 * @param hvo
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/writeHelp.do")
	public ModelAndView writeHelp(HttpServletRequest request, HelpVO hvo) throws SQLException{
		helpService.writeHelp(hvo);
		return new ModelAndView("redirect:/showHelpInfo.do?no="+hvo.getNo());
	}
	/**
	 * redirect로 보낸 no를 통해서 조회수를 올리지 않고 
	 * 글을 가져오는 메서드
	 * @param no
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/showHelpInfoNoHits.do")
	public ModelAndView showHelpInfoNoHits(int no) throws SQLException{
		return new ModelAndView("showHelpInfo","hvo",helpService.showHelpInfoNoHits(no));
	}
	/**
	 * 문의하기의 리스트 보여주기
	 * @param pageNo
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/helpList.do")
	public ModelAndView getHelpList(String pageNo) throws SQLException{
		System.out.println("문의하기 페이지:"+pageNo);
		return new ModelAndView("support/help/helpList.help","list",helpService.getHelpList(pageNo));
	}
	/**
	 * 리스트에서 제목 클릭
	 * 문의하기 글 상세보기
	 * @param no
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/showHelpInfo.do")
	public ModelAndView showHelpInfo(int no) throws SQLException{
		System.out.println("showHelpInfo:"+no);
		HelpVO hvo=helpService.showHelpInfo(no);
		System.out.println("showHelpInfo:"+hvo);
		return new ModelAndView("support/help/showHelpInfo.help","hvo",hvo);
	}
	/**
	 * 문의하기의 업데이트 페이지로 이동
	 * no로 글 정보를 가져온다.
	 * @param no
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/updateHelpPage.do")
	public ModelAndView updateHelpPage(int no) throws Exception{
		return new ModelAndView("support/help/updateHelpPage.help","hvo",helpService.showHelpInfoNoHits(no));
	}
	/**
	 * 문의하기 수정 내용을 업데이트 한다.
	 * @param hvo
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/updateHelp.do")
	public ModelAndView updateHelp(HelpVO hvo) throws SQLException{
		int result=helpService.updateHelp(hvo);
		String str="support/help/showHelpInfo.help";
		if(result==0){
			str="/WEB-INF/error";
		}
		return new ModelAndView(str,"hvo",helpService.showHelpInfoNoHits(hvo.getNo()));
	}
	/**
	 * 문의하기 삭제
	 * @param no
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/deleteHelp.do")
	public ModelAndView deleteHelp(int no) throws SQLException{
		helpService.deleteHelp(no);
		return new ModelAndView("support/help/helpList.help","list",helpService.getHelpList("1"));
	}
	/**
	 * 문의하기 댓글달기 페이지 이동
	 * @param no
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/writeHelpReplyPage.do")
	public ModelAndView writeHelpReplyPage(int no) throws SQLException{
		HelpVO hvo=helpService.showHelpInfoNoHits(no);
		return new ModelAndView("support/help/writeHelpReplyPage.help","hvo",hvo);
	}
	/**
	 * 문의하기 댓글달기 쓰기
	 * @param hvo
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/writeHelpReply.do")
	public ModelAndView writeHelpReply(HelpVO hvo) throws SQLException{
		helpService.writeHelpReply(hvo);
		return new ModelAndView("redirect:/showHelpInfo.do?no="+hvo.getNo(),
				"hvo",helpService.showHelpInfoNoHits(hvo.getNo()));
	}
///////////////////////아이디 패스워드 찾기/////////////////////
	/**
	 * 아이디 찾기 페이지로 이동
	 * @return
	 * @throws SQLException
	 */
	@RequestMapping("/findIdPage.do")
	public ModelAndView findIdPage() throws SQLException{
		return new ModelAndView("support/inquiry/findIdPage.inquiry");
	}
	/**
	 * 패스워드 찾기 페이지로 이동
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/findPasswordPage.do")
	public ModelAndView findPassowordPage() throws Exception{
		return new ModelAndView("support/inquiry/findPasswordPage.inquiry");
	}
////////////////////////////////지훈////////////////////////////////
}
